/*!
*****************************************************************************
** \file        ./adi/inc/adi_gpio.h
**
** \version     $Id: adi_gpio.h 2 2014-08-07 07:42:50Z huangjunlei $
**
** \brief       adapt driver for gpio
**
** \attention   THIS SAMPLE CODE IS PROVIDED AS IS. GOKE MICROELECTRONICS
**              ACCEPTS NO RESPONSIBILITY OR LIABILITY FOR ANY ERRORS OR
**              OMMISSIONS
**
** (C) Copyright 2012-2013 by GOKE MICROELECTRONICS CO.,LTD
**
*****************************************************************************
*/
#ifndef _ADI_GPIO_H_
#define _ADI_GPIO_H_


	//*****************************************************************************
	//*****************************************************************************
	//** Defines and Macros
	//*****************************************************************************
	//*****************************************************************************

	/*
	**************************************************************************
	** Defines for general error codes of the module.
	**************************************************************************
	*/
	/*! Bad parameter passed. */
#define GADI_GPIO_ERR_BAD_PARAMETER                                          \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_BAD_PARAMETER)
	/*! Memory allocation failed. */
#define GADI_GPIO_ERR_OUT_OF_MEMORY                                          \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_OUT_OF_MEMORY)
	/*! Device already initialised. */
#define GADI_GPIO_ERR_ALREADY_INITIALIZED                                    \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_ALREADY_INITIALIZED)
	/*! Device not initialised. */
#define GADI_GPIO_ERR_NOT_INITIALIZED                                        \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_NOT_INITIALIZED)
	/*! Feature or function is not available. */
#define GADI_GPIO_ERR_FEATURE_NOT_SUPPORTED                                  \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_FEATURE_NOT_SUPPORTED)
	/*! Timeout occured. */
#define GADI_GPIO_ERR_TIMEOUT                                                \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_TIMEOUT)
	/*! The device is busy, try again later. */
#define GADI_GPIO_ERR_DEVICE_BUSY                                            \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_DEVICE_BUSY)
	/*! Invalid handle was passed. */
#define GADI_GPIO_ERR_INVALID_HANDLE                                         \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_INVALID_HANDLE)
	/*! Semaphore could not be created. */
#define GADI_GPIO_ERR_SEMAPHORE_CREATE                                       \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_SEMAPHORE_CREATE)
	/*! The driver's used version is not supported. */
#define GADI_GPIO_ERR_UNSUPPORTED_VERSION                                    \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_UNSUPPORTED_VERSION)
	/*! The driver's used version is not supported. */
#define GADI_GPIO_ERR_FROM_DRIVER                                            \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_FROM_DRIVER)
	/*! The device/handle is not open.. */
#define GADI_GPIO_ERR_NOT_OPEN                                               \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_NOT_OPEN)
	/*! The file is written failed. */
#define GADI_GPIO_ERR_WRITE_FAILED                                           \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_WRITE_FAILED)
	/*! The file is read failed. */
#define GADI_GPIO_ERR_READ_FAILED                                            \
								  (GADI_GPIO_MODULE_BASE + GADI_ERR_READ_FAILED)

#define GADI_GPIO_OUT_SEL(n)      ((n))
#define GADI_GPIO_IN_SEL(n)       ((n)<<8)
#define GADI_GPIO_OEN_SEL(n)      ((n)<<16)
#define GADI_GPIO_OUT_INVERT(n)   ((n)<<22)
#define GADI_GPIO_OEN_INVERT(n)   ((n)<<23)
#define GADI_GPIO_IOCTRL(n)       ((n)<<24)
#define GADI_GPIO_FUNC(n)         ((n)<<30)

#define GADI_GPIO_FUNC_IN     1
#define GADI_GPIO_FUNC_OUT    2
#define GADI_GPIO_FUNC_INOUT  3

#define GADI_IOCTRL_PULL_UP      0x10    //!< PULL_UP
#define GADI_IOCTRL_PULL_DOWN    0x20    //!< PULL_DOWN

#define GADI_IOCTRL_2MA          0x00    //!< 2mA
#define GADI_IOCTRL_4MA          0x01    //!< 4mA
#define GADI_IOCTRL_8MA          0x02    //!< 8mA
#define GADI_IOCTRL_12MA         0x03    //!< 12mA



typedef enum
{
    GADI_GPIO_0  =  0, //!< Value representing GPIO  0.
    GADI_GPIO_1  =  1, //!< Value representing GPIO  1.
    GADI_GPIO_2  =  2, //!< Value representing GPIO  2.
    GADI_GPIO_3  =  3, //!< Value representing GPIO  3.
    GADI_GPIO_4  =  4, //!< Value representing GPIO  4.
    GADI_GPIO_5  =  5, //!< Value representing GPIO  5.
    GADI_GPIO_6  =  6, //!< Value representing GPIO  6.
    GADI_GPIO_7  =  7, //!< Value representing GPIO  7.
    GADI_GPIO_8  =  8, //!< Value representing GPIO  8.
    GADI_GPIO_9  =  9, //!< Value representing GPIO  9.
    GADI_GPIO_10 = 10, //!< Value representing GPIO 10.
    GADI_GPIO_11 = 11, //!< Value representing GPIO 11.
    GADI_GPIO_12 = 12, //!< Value representing GPIO 12.
    GADI_GPIO_13 = 13, //!< Value representing GPIO 13.
    GADI_GPIO_14 = 14, //!< Value representing GPIO 14.
    GADI_GPIO_15 = 15, //!< Value representing GPIO 15.
    GADI_GPIO_16 = 16, //!< Value representing GPIO 16.
    GADI_GPIO_17 = 17, //!< Value representing GPIO 17.
    GADI_GPIO_18 = 18, //!< Value representing GPIO 18.
    GADI_GPIO_19 = 19, //!< Value representing GPIO 19.
    GADI_GPIO_20 = 20, //!< Value representing GPIO 20.
    GADI_GPIO_21 = 21, //!< Value representing GPIO 21.
    GADI_GPIO_22 = 22, //!< Value representing GPIO 22.
    GADI_GPIO_23 = 23, //!< Value representing GPIO 23.
    GADI_GPIO_24 = 24, //!< Value representing GPIO 24.
    GADI_GPIO_25 = 25, //!< Value representing GPIO 25.
    GADI_GPIO_26 = 26, //!< Value representing GPIO 26.
    GADI_GPIO_27 = 27, //!< Value representing GPIO 27.
    GADI_GPIO_28 = 28, //!< Value representing GPIO 28.
    GADI_GPIO_29 = 29, //!< Value representing GPIO 29.
    GADI_GPIO_30 = 30, //!< Value representing GPIO 30.
    GADI_GPIO_31 = 31, //!< Value representing GPIO 31.
    GADI_GPIO_32 = 32, //!< Value representing GPIO 32.
    GADI_GPIO_33 = 33, //!< Value representing GPIO 33.
    GADI_GPIO_34 = 34, //!< Value representing GPIO 34.
    GADI_GPIO_35 = 35, //!< Value representing GPIO 35.
    GADI_GPIO_36 = 36, //!< Value representing GPIO 36.
    GADI_GPIO_37 = 37, //!< Value representing GPIO 37.
    GADI_GPIO_38 = 38, //!< Value representing GPIO 38.
    GADI_GPIO_39 = 39, //!< Value representing GPIO 39.
    GADI_GPIO_40 = 40, //!< Value representing GPIO 40.
    GADI_GPIO_41 = 41, //!< Value representing GPIO 41.
    GADI_GPIO_42 = 42, //!< Value representing GPIO 42.
    GADI_GPIO_43 = 43, //!< Value representing GPIO 43.
    GADI_GPIO_44 = 44, //!< Value representing GPIO 44.
    GADI_GPIO_45 = 45, //!< Value representing GPIO 45.
    GADI_GPIO_46 = 46, //!< Value representing GPIO 46.
    GADI_GPIO_47 = 47, //!< Value representing GPIO 47.
    GADI_GPIO_48 = 48, //!< Value representing GPIO 48.
    GADI_GPIO_49 = 49, //!< Value representing GPIO 49.
    GADI_GPIO_50 = 50, //!< Value representing GPIO 50.
    GADI_GPIO_51 = 51, //!< Value representing GPIO 51.
    GADI_GPIO_52 = 52, //!< Value representing GPIO 52.
    GADI_GPIO_53 = 53, //!< Value representing GPIO 53.
    GADI_GPIO_54 = 54, //!< Value representing GPIO 54.
    GADI_GPIO_55 = 55, //!< Value representing GPIO 55.
    GADI_GPIO_56 = 56, //!< Value representing GPIO 56.
    GADI_GPIO_57 = 57, //!< Value representing GPIO 57.
    GADI_GPIO_58 = 58, //!< Value representing GPIO 58.
    GADI_GPIO_59 = 59, //!< Value representing GPIO 59.
    GADI_GPIO_60 = 60, //!< Value representing GPIO 60.
    GADI_GPIO_61 = 61, //!< Value representing GPIO 61.
    GADI_GPIO_62 = 62, //!< Value representing GPIO 62.
    GADI_GPIO_63 = 63, //!< Value representing GPIO 63.
    GADI_GPIO_NUM,
}GADI_GPIO_PinEnumT;

#ifndef CODEC_710XS
typedef enum
{

    /* ----------------------------------- GPIO output function define ----------------------------------- */
    GADI_GPIO_TYPE_OUTPUT_0               = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 0),    //!< Output type: value = 0
    GADI_GPIO_TYPE_OUTPUT_1               = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 1),    //!< Output type: value = 1
    GADI_GPIO_TYPE_OUTPUT_SPI1_SO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 2) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 2),    //!< Output type: tssi_txd
    GADI_GPIO_TYPE_OUTPUT_SPI1_CS0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 3),    //!< Output type: tssi_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SPI1_SCLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 4),    //!< Output type: tssi_sclk_out
    GADI_GPIO_TYPE_OUTPUT_UART2_RTS_N     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 5),    //!< Output type: uart2_rts_n
    GADI_GPIO_TYPE_OUTPUT_UART2_DTR_N     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 6),    //!< Output type: uart2_dtr_n
    GADI_GPIO_TYPE_OUTPUT_UART2_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 7),    //!< Output type: uart2_tx
    GADI_GPIO_TYPE_OUTPUT_UART1_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 8),    //!< Output type: uart1_tx
    GADI_GPIO_TYPE_OUTPUT_UART0_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 9),    //!< Output type: uart0_tx
    GADI_GPIO_TYPE_OUTPUT_PWM3_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(10),    //!< Output type: pwm3_out
    GADI_GPIO_TYPE_OUTPUT_PWM2_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(11),    //!< Output type: pwm2_out
    GADI_GPIO_TYPE_OUTPUT_PWM1_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(12),    //!< Output type: pwm1_out
    GADI_GPIO_TYPE_OUTPUT_PWM0_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(13),    //!< Output type: pwm0_out
    GADI_GPIO_TYPE_OUTPUT_SPI0_SO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 7) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(14),    //!< Output type: ssi_txd
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(15),    //!< Output type: ssi_cs7_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(16),    //!< Output type: ssi_cs6_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(17),    //!< Output type: ssi_cs5_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(18),    //!< Output type: ssi_cs4_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(19),    //!< Output type: ssi_cs1_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(20),    //!< Output type: ssi_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_SCLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(21),    //!< Output type: ssi_sclk_out

    GADI_GPIO_TYPE_OUTPUT_SDIO_CLK        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)     | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(31),    //!< Output type: sd_clk_sdcard
    GADI_GPIO_TYPE_OUTPUT_AOMCLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(32),    //!< Output type: i2s_au_clk
    GADI_GPIO_TYPE_OUTPUT_AOBCLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(17) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(33),    //!< Output type: i2s_clk_o
    GADI_GPIO_TYPE_OUTPUT_AOLRCLK         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(18) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(34),    //!< Output type: i2s_ws_o
    GADI_GPIO_TYPE_OUTPUT_AO_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(35),    //!< Output type: i2s_so
    GADI_GPIO_TYPE_OUTPUT_SF_CS0          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(36),    //!< Output type: sf_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SF_CS1          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(37),    //!< Output type: sf_cs1_n
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_0      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(38),    //!< Output type: ephy_led[0] hcd ok
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_1      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(39),    //!< Output type: ephy_led[1] duplex
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_2      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(40),    //!< Output type: ephy_led[2] 10M CRS out
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_3      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(41),    //!< Output type: ephy_led[3] 100M CRS out
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_4      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(42),    //!< Output type: ephy_led[4] clo gs
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_0  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(43),    //!< Output type: enet_phy_txd[0]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_1  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(44),    //!< Output type: enet_phy_txd[1]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_2  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(45),    //!< Output type: enet_phy_txd[2]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_3  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(46),    //!< Output type: enet_phy_txd[3]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXER   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(47),    //!< Output type: enet_phy_txer
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXEN   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(48),    //!< Output type: enet_phy_txen

    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_RESET  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(61),    //!< Output type: enet_phy_reset

    GADI_GPIO_TYPE_OUTPUT_ENET_GMII_MDC_O = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(50),    //!< Output type: enet_gmii_mdc_o
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_0    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(51),    //!< Output type: ahb_dac_dr[0]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_1    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(52),    //!< Output type: ahb_dac_dr[1]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_2    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(53),    //!< Output type: ahb_dac_dr[2]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_3    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(54),    //!< Output type: ahb_dac_dr[3]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_4    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(55),    //!< Output type: ahb_dac_dr[4]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_5    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(56),    //!< Output type: ahb_dac_dr[5]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_6    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(57),    //!< Output type: ahb_dac_dr[6]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_7    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(58),    //!< Output type: ahb_dac_dr[7]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_8    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(59),    //!< Output type: ahb_dac_dr[8]
    GADI_GPIO_TYPE_OUTPUT_AHB_DAC_DR_9    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(60),    //!< Output type: ahb_dac_dr[9]

    /* ----------------------------------- GPIO input function define ----------------------------------- */

    GADI_GPIO_TYPE_INPUT_0                = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(   0) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: normal input
    GADI_GPIO_TYPE_INPUT_1                = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(   1) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: normal input
    GADI_GPIO_TYPE_INPUT_SPI1_SI          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 0) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: tssi_rxd

    GADI_GPIO_TYPE_INPUT_UART2_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 5) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: uart2_rx
    GADI_GPIO_TYPE_INPUT_UART1_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 6) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: uart1_rx
    GADI_GPIO_TYPE_INPUT_UART0_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 7) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: uart0_rx
    GADI_GPIO_TYPE_INPUT_TIMER1_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 8) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: timer1_clk
    GADI_GPIO_TYPE_INPUT_TIMER2_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 9) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: timer2_clk
    GADI_GPIO_TYPE_INPUT_TIMER3_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+10) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: timer3_clk
    GADI_GPIO_TYPE_INPUT_SPI0_SI          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+11) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: ssi_rxd
    GADI_GPIO_TYPE_INPUT_SD_WP_N          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+12) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: sd_wp_n
    GADI_GPIO_TYPE_INPUT_SD_CD_N          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+13) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: sd_cd_n

    GADI_GPIO_TYPE_INPUT_I2S_CLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+23) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: i2s_clk
    GADI_GPIO_TYPE_INPUT_I2S_WS           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+24) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: i2s_ws
    GADI_GPIO_TYPE_INPUT_I2S_SI           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+25) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: i2s_si
    GADI_GPIO_TYPE_INPUT_CLK_AU           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+26) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: clk_au
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_0   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+27) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[0]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_1   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+28) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[1]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_2   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+29) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[2]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_3   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+30) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[3]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_COL     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+31) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_col
    GADI_GPIO_TYPE_INPUT_ENET_PHY_CRS     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+32) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_crs
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXER    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+33) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxer
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXDV    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+34) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxdv

    GADI_GPIO_TYPE_INPUT_ENET_CLK_RX      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+36) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_clk_rx
    GADI_GPIO_TYPE_INPUT_ENET_CLK_TX      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+37) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_clk_tx

    /* ----------------------------------- GPIO input&&output function define ----------------------------------- */
    GADI_GPIO_TYPE_INOUT_I2C_DATA         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 3) | GADI_GPIO_IN_SEL(2+ 1) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_sda
    GADI_GPIO_TYPE_INOUT_I2C_CLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 4) | GADI_GPIO_IN_SEL(2+ 2) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_scl
    GADI_GPIO_TYPE_INOUT_I2C_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 5) | GADI_GPIO_IN_SEL(2+ 3) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_sda2
    GADI_GPIO_TYPE_INOUT_I2C_CLK2         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 6) | GADI_GPIO_IN_SEL(2+ 4) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_scl2

    GADI_GPIO_TYPE_INOUT_ETH_MDIO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(19) | GADI_GPIO_IN_SEL(2+35) | GADI_GPIO_OUT_SEL(49),    //!< Input/Output type: enet_gmii_mdi/enet_gmii_mod_o

    GADI_GPIO_TYPE_INOUT_SD_DATA_0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 8) | GADI_GPIO_IN_SEL(2+14) | GADI_GPIO_OUT_SEL(22),    //!< Input/Output type: sd_data_out[0]
    GADI_GPIO_TYPE_INOUT_SD_DATA_1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 9) | GADI_GPIO_IN_SEL(2+15) | GADI_GPIO_OUT_SEL(23),    //!< Input/Output type: sd_data_out[1]
    GADI_GPIO_TYPE_INOUT_SD_DATA_2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(10) | GADI_GPIO_IN_SEL(2+16) | GADI_GPIO_OUT_SEL(24),    //!< Input/Output type: sd_data_out[2]
    GADI_GPIO_TYPE_INOUT_SD_DATA_3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(11) | GADI_GPIO_IN_SEL(2+17) | GADI_GPIO_OUT_SEL(25),    //!< Input/Output type: sd_data_out[3]
    GADI_GPIO_TYPE_INOUT_SD_DATA_4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(12) | GADI_GPIO_IN_SEL(2+18) | GADI_GPIO_OUT_SEL(26),    //!< Input/Output type: sd_data_out[4]
    GADI_GPIO_TYPE_INOUT_SD_DATA_5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(13) | GADI_GPIO_IN_SEL(2+19) | GADI_GPIO_OUT_SEL(27),    //!< Input/Output type: sd_data_out[5]
    GADI_GPIO_TYPE_INOUT_SD_DATA_6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(14) | GADI_GPIO_IN_SEL(2+20) | GADI_GPIO_OUT_SEL(28),    //!< Input/Output type: sd_data_out[6]
    GADI_GPIO_TYPE_INOUT_SD_DATA_7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(15) | GADI_GPIO_IN_SEL(2+21) | GADI_GPIO_OUT_SEL(29),    //!< Input/Output type: sd_data_out[7]
    GADI_GPIO_TYPE_INOUT_SD_CMD           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(16) | GADI_GPIO_IN_SEL(2+22) | GADI_GPIO_OUT_SEL(30),    //!< Input/Output : sd_cmd

    GADI_GPIO_TYPE_UNDEFINED              = 0,
} GADI_GPIO_TypeEnumT;
#else
#ifndef GK7102C

typedef enum
{

    /* ----------------------------------- GPIO output function define ----------------------------------- */
    GADI_GPIO_TYPE_OUTPUT_0               = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 0),    //!< Output type: value = 0
    GADI_GPIO_TYPE_OUTPUT_1               = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 1),    //!< Output type: value = 1
    GADI_GPIO_TYPE_OUTPUT_SPI1_SO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 2) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 2),    //!< Output type: tssi_txd
    GADI_GPIO_TYPE_OUTPUT_SPI1_CS0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 3),    //!< Output type: tssi_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SPI1_SCLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 4),    //!< Output type: tssi_sclk_out
    GADI_GPIO_TYPE_OUTPUT_UART2_RTS_N     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 5),    //!< Output type: uart2_rts_n
    GADI_GPIO_TYPE_OUTPUT_UART2_DTR_N     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 6),    //!< Output type: uart2_dtr_n
    GADI_GPIO_TYPE_OUTPUT_UART2_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 7),    //!< Output type: uart2_tx
    GADI_GPIO_TYPE_OUTPUT_UART1_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 8),    //!< Output type: uart1_tx
    GADI_GPIO_TYPE_OUTPUT_UART0_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 9),    //!< Output type: uart0_tx
    GADI_GPIO_TYPE_OUTPUT_PWM3_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(10),    //!< Output type: pwm3_out
    GADI_GPIO_TYPE_OUTPUT_PWM2_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(11),    //!< Output type: pwm2_out
    GADI_GPIO_TYPE_OUTPUT_PWM1_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(12),    //!< Output type: pwm1_out
    GADI_GPIO_TYPE_OUTPUT_PWM0_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(13),    //!< Output type: pwm0_out
    GADI_GPIO_TYPE_OUTPUT_SPI0_SO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 7) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(14),    //!< Output type: ssi_txd
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(15),    //!< Output type: ssi_cs7_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(16),    //!< Output type: ssi_cs6_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(17),    //!< Output type: ssi_cs5_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(18),    //!< Output type: ssi_cs4_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(19),    //!< Output type: ssi_cs1_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(20),    //!< Output type: ssi_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_SCLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(21),    //!< Output type: ssi_sclk_out
    //GADI_GPIO_TYPE_INOUT_SD_DATA_0                                                                                                                                         GADI_GPIO_OEN_SEL( 8)                          GADI_GPIO_OUT_SEL(22)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_1                                                                                                                                         GADI_GPIO_OEN_SEL( 9)                          GADI_GPIO_OUT_SEL(23)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_2                                                                                                                                         GADI_GPIO_OEN_SEL(10)                          GADI_GPIO_OUT_SEL(24)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_3                                                                                                                                         GADI_GPIO_OEN_SEL(11)                          GADI_GPIO_OUT_SEL(25)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_4                                                                                                                                         GADI_GPIO_OEN_SEL(12)                          GADI_GPIO_OUT_SEL(26)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_5                                                                                                                                         GADI_GPIO_OEN_SEL(13)                          GADI_GPIO_OUT_SEL(27)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_6                                                                                                                                         GADI_GPIO_OEN_SEL(14)                          GADI_GPIO_OUT_SEL(28)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_7                                                                                                                                         GADI_GPIO_OEN_SEL(15)                          GADI_GPIO_OUT_SEL(29)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                          GADI_GPIO_OEN_SEL(16)                          GADI_GPIO_OUT_SEL(30)
    GADI_GPIO_TYPE_OUTPUT_SDIO_CLK        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)     | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(31),    //!< Output type: sd_clk_sdcard
    GADI_GPIO_TYPE_OUTPUT_AOMCLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(32),    //!< Output type: i2s_au_clk
    GADI_GPIO_TYPE_OUTPUT_AOBCLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(17) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(33),    //!< Output type: i2s_clk_o
    GADI_GPIO_TYPE_OUTPUT_AOLRCLK         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(18) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(34),    //!< Output type: i2s_ws_o
    GADI_GPIO_TYPE_OUTPUT_AO_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(35),    //!< Output type: i2s_so
    GADI_GPIO_TYPE_OUTPUT_SF_CS0          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(36),    //!< Output type: sf_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SF_CS1          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(37),    //!< Output type: sf_cs1_n
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_0      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(38),    //!< Output type: ephy_led[0] hcd ok
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_1      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(39),    //!< Output type: ephy_led[1] duplex
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_2      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(40),    //!< Output type: ephy_led[2] 10M CRS out
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_3      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(41),    //!< Output type: ephy_led[3] 100M CRS out
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_4      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(42),    //!< Output type: ephy_led[4] clo gs
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_0  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(43),    //!< Output type: enet_phy_txd[0]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_1  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(44),    //!< Output type: enet_phy_txd[1]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_2  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(45),    //!< Output type: enet_phy_txd[2]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_3  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(46),    //!< Output type: enet_phy_txd[3]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXER   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(47),    //!< Output type: enet_phy_txer
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXEN   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(48),    //!< Output type: enet_phy_txen
    // GADI_GPIO_TYPE_INOUT_ETH_MDIO                                                                                                                                                                                      GADI_GPIO_OUT_SEL(49)
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_RESET  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(49),    //!< Output type: enet_phy_reset

    GADI_GPIO_TYPE_OUTPUT_ENET_GMII_MDC_O = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(50),    //!< Output type: enet_gmii_mdc_o
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_0                                                                                                                                        GADI_GPIO_OEN_SEL(20)                          GADI_GPIO_OUT_SEL(51)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_1                                                                                                                                        GADI_GPIO_OEN_SEL(21)                          GADI_GPIO_OUT_SEL(52)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_2                                                                                                                                        GADI_GPIO_OEN_SEL(22)                          GADI_GPIO_OUT_SEL(53)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_3                                                                                                                                        GADI_GPIO_OEN_SEL(23)                          GADI_GPIO_OUT_SEL(54)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                          GADI_GPIO_OEN_SEL(24)                          GADI_GPIO_OUT_SEL(55)
    GADI_GPIO_TYPE_OUTPUT_SDIO1_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)     | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(56),	//!< Output type: sd2_clk_sdcard
    GADI_GPIO_TYPE_OUTPUT_JTAGE_TDO       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(57),    //!< Output type: jtag_tdout
    GADI_GPIO_TYPE_OUTPUT_VD_VSYNC        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(58),    //!< Output type: lcd_vsync
    GADI_GPIO_TYPE_OUTPUT_VD_HSYNC        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(59),    //!< Output type: lcd_hsync
    GADI_GPIO_TYPE_OUTPUT_VD_CLOCK        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(60),    //!< Output type: lcd_dclk
    GADI_GPIO_TYPE_OUTPUT_VD_HVLD         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(61),    //!< Output type: lcd_hvld
    GADI_GPIO_TYPE_OUTPUT_VD_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(62),    //!< Output type: lcd_data0
    GADI_GPIO_TYPE_OUTPUT_VD_DATA1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(63),    //!< Output type: lcd_data1
    GADI_GPIO_TYPE_OUTPUT_VD_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(64),    //!< Output type: lcd_data2
    GADI_GPIO_TYPE_OUTPUT_VD_DATA3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(65),    //!< Output type: lcd_data3
    GADI_GPIO_TYPE_OUTPUT_VD_DATA4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(66),    //!< Output type: lcd_data4
    GADI_GPIO_TYPE_OUTPUT_VD_DATA5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(67),    //!< Output type: lcd_data5
    GADI_GPIO_TYPE_OUTPUT_VD_DATA6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(68),    //!< Output type: lcd_data6
    GADI_GPIO_TYPE_OUTPUT_VD_DATA7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(69),    //!< Output type: lcd_data7
    GADI_GPIO_TYPE_OUTPUT_VD_DATA8        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(70),    //!< Output type: lcd_data8
    GADI_GPIO_TYPE_OUTPUT_VD_DATA9        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(71),    //!< Output type: lcd_data9
    GADI_GPIO_TYPE_OUTPUT_VD_DATA10       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(72),    //!< Output type: lcd_data10
    GADI_GPIO_TYPE_OUTPUT_VD_DATA11       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(73),    //!< Output type: lcd_data11
    GADI_GPIO_TYPE_OUTPUT_VD_DATA12       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(74),    //!< Output type: lcd_data12
    GADI_GPIO_TYPE_OUTPUT_VD_DATA13       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(75),    //!< Output type: lcd_data13
    GADI_GPIO_TYPE_OUTPUT_VD_DATA14       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(76),    //!< Output type: lcd_data14
    GADI_GPIO_TYPE_OUTPUT_VD_DATA15       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(77),    //!< Output type: lcd_data15
    GADI_GPIO_TYPE_OUTPUT_VD_DATA16       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(78),    //!< Output type: lcd_data16
    GADI_GPIO_TYPE_OUTPUT_VD_DATA17       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(79),    //!< Output type: lcd_data17
    GADI_GPIO_TYPE_OUTPUT_VD_DATA18       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(80),    //!< Output type: lcd_data18
    GADI_GPIO_TYPE_OUTPUT_VD_DATA19       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(81),    //!< Output type: lcd_data19
    GADI_GPIO_TYPE_OUTPUT_VD_DATA20       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(82),    //!< Output type: lcd_data20
    GADI_GPIO_TYPE_OUTPUT_VD_DATA21       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(83),    //!< Output type: lcd_data21
    GADI_GPIO_TYPE_OUTPUT_VD_DATA22       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(84),    //!< Output type: lcd_data22
    GADI_GPIO_TYPE_OUTPUT_VD_DATA23       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(85),    //!< Output type: lcd_data23
    GADI_GPIO_TYPE_OUTPUT_RCT_CLK_OUT2    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(86),    //!< Output type: rct_clk_out2
    GADI_GPIO_TYPE_OUTPUT_RCT_CLK_OUT1    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(87),    //!< Output type: rct_clk_out1
    GADI_GPIO_TYPE_OUTPUT_I80_LCD_RST     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(88),//!< Output type: i80_lcd_rst
    GADI_GPIO_TYPE_OUTPUT_I80_RDN         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(89),//!< Output type: i80_rdn
    GADI_GPIO_TYPE_OUTPUT_I80_WRN         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(90),//!< Output type: i80_wrn
    GADI_GPIO_TYPE_OUTPUT_I80_DCX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(91),//!< Output type: i80_dcx
    GADI_GPIO_TYPE_OUTPUT_I80_CSN         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(92),//!< Output type: i80_csn
    GADI_GPIO_TYPE_OUTPUT_I80_DATA0       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(93),//!< Output type: i80_data_tx0
    GADI_GPIO_TYPE_OUTPUT_I80_DATA1       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(94),//!< Output type: i80_data_tx1
    GADI_GPIO_TYPE_OUTPUT_I80_DATA2       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(95),//!< Output type: i80_data_tx2
    GADI_GPIO_TYPE_OUTPUT_I80_DATA3       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(96),//!< Output type: i80_data_tx3
    GADI_GPIO_TYPE_OUTPUT_I80_DATA4       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(97),//!< Output type: i80_data_tx4
    GADI_GPIO_TYPE_OUTPUT_I80_DATA5       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(98),//!< Output type: i80_data_tx5
    GADI_GPIO_TYPE_OUTPUT_I80_DATA6       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(99),//!< Output type: i80_data_tx6
    GADI_GPIO_TYPE_OUTPUT_I80_DATA7       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(100),//!< Output type: i80_data_tx7
    GADI_GPIO_TYPE_OUTPUT_I80_DATA8       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(101),//!< Output type: i80_data_tx8
    GADI_GPIO_TYPE_OUTPUT_PWM7_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(102),    //!< Output type: pwm7_out
    GADI_GPIO_TYPE_OUTPUT_PWM6_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(103),    //!< Output type: pwm6_out
    GADI_GPIO_TYPE_OUTPUT_PWM5_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(104),    //!< Output type: pwm5_out
    GADI_GPIO_TYPE_OUTPUT_PWM4_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(105),    //!< Output type: pwm4_out

/*    GADI_GPIO_TYPE_OUTPUT_RCT_CLK_OUT2    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(78),    //!< Output type: rct_clk_out2
    GADI_GPIO_TYPE_OUTPUT_RCT_CLK_OUT1    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(79),    //!< Output type: rct_clk_out1
    GADI_GPIO_TYPE_OUTPUT_I80_LCD_RST     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(80),//!< Output type: i80_lcd_rst
    GADI_GPIO_TYPE_OUTPUT_I80_RDN         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(81),//!< Output type: i80_rdn
    GADI_GPIO_TYPE_OUTPUT_I80_WRN         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(82),//!< Output type: i80_wrn
    GADI_GPIO_TYPE_OUTPUT_I80_DCX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(83),//!< Output type: i80_dcx
    GADI_GPIO_TYPE_OUTPUT_I80_CSN         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(84),//!< Output type: i80_csn
    GADI_GPIO_TYPE_OUTPUT_I80_DATA0       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(85),//!< Output type: i80_data_tx0
    GADI_GPIO_TYPE_OUTPUT_I80_DATA1       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(86),//!< Output type: i80_data_tx1
    GADI_GPIO_TYPE_OUTPUT_I80_DATA2       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(87),//!< Output type: i80_data_tx2
    GADI_GPIO_TYPE_OUTPUT_I80_DATA3       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(88),//!< Output type: i80_data_tx3
    GADI_GPIO_TYPE_OUTPUT_I80_DATA4       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(89),//!< Output type: i80_data_tx4
    GADI_GPIO_TYPE_OUTPUT_I80_DATA5       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(90),//!< Output type: i80_data_tx5
    GADI_GPIO_TYPE_OUTPUT_I80_DATA6       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(91),//!< Output type: i80_data_tx6
    GADI_GPIO_TYPE_OUTPUT_I80_DATA7       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(92),//!< Output type: i80_data_tx7
    GADI_GPIO_TYPE_OUTPUT_I80_DATA8       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(93),//!< Output type: i80_data_tx8
    GADI_GPIO_TYPE_OUTPUT_PWM7_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(94),    //!< Output type: pwm7_out
    GADI_GPIO_TYPE_OUTPUT_PWM6_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(95),    //!< Output type: pwm6_out
    GADI_GPIO_TYPE_OUTPUT_PWM5_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(96),    //!< Output type: pwm5_out
    GADI_GPIO_TYPE_OUTPUT_PWM4_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(97),    //!< Output type: pwm4_out
*/

    /* ----------------------------------- GPIO input function define ----------------------------------------------------------------------------------------------------------- */

    GADI_GPIO_TYPE_INPUT_0                = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(   0) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: normal input
    GADI_GPIO_TYPE_INPUT_1                = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(   1) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: normal input
    GADI_GPIO_TYPE_INPUT_SPI1_SI          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 0) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: tssi_rxd
    //GADI_GPIO_TYPE_INOUT_I2C_DATA                                                                                                                                                                GADI_GPIO_IN_SEL(2+ 1)
    //GADI_GPIO_TYPE_INOUT_I2C_CLK                                                                                                                                                                 GADI_GPIO_IN_SEL(2+ 2)
    //GADI_GPIO_TYPE_INOUT_I2C_DATA2                                                                                                                                                               GADI_GPIO_IN_SEL(2+ 3)
    //GADI_GPIO_TYPE_INOUT_I2C_CLK2                                                                                                                                                                GADI_GPIO_IN_SEL(2+ 4)
    GADI_GPIO_TYPE_INPUT_UART2_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 5) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: uart2_rx
    GADI_GPIO_TYPE_INPUT_UART1_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 6) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: uart1_rx
    GADI_GPIO_TYPE_INPUT_UART0_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 7) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: uart0_rx
    GADI_GPIO_TYPE_INPUT_TIMER1_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 8) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: timer1_clk
    GADI_GPIO_TYPE_INPUT_TIMER2_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 9) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: timer2_clk
    GADI_GPIO_TYPE_INPUT_TIMER3_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+10) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: timer3_clk
    GADI_GPIO_TYPE_INPUT_SPI0_SI          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+11) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: ssi_rxd
    GADI_GPIO_TYPE_INPUT_SD_WP_N          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+12) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: sd_wp_n
    GADI_GPIO_TYPE_INPUT_SD_CD_N          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+13) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: sd_cd_n
    //GADI_GPIO_TYPE_INOUT_SD_DATA_0                                                                                                                                                               GADI_GPIO_IN_SEL(2+14)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_1                                                                                                                                                               GADI_GPIO_IN_SEL(2+15)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_2                                                                                                                                                               GADI_GPIO_IN_SEL(2+16)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_3                                                                                                                                                               GADI_GPIO_IN_SEL(2+17)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_4                                                                                                                                                               GADI_GPIO_IN_SEL(2+18)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_5                                                                                                                                                               GADI_GPIO_IN_SEL(2+19)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_6                                                                                                                                                               GADI_GPIO_IN_SEL(2+20)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_7                                                                                                                                                               GADI_GPIO_IN_SEL(2+21)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                                                GADI_GPIO_IN_SEL(2+22)
    GADI_GPIO_TYPE_INPUT_I2S_CLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+23) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: i2s_clk
    GADI_GPIO_TYPE_INPUT_I2S_WS           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+24) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: i2s_ws
    GADI_GPIO_TYPE_INPUT_I2S_SI           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+25) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: i2s_si
    GADI_GPIO_TYPE_INPUT_CLK_AU           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+26) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: clk_au
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_0   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+27) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[0]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_1   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+28) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[1]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_2   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+29) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[2]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_3   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+30) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxd[3]
    GADI_GPIO_TYPE_INPUT_ENET_PHY_COL     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+31) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_col
    GADI_GPIO_TYPE_INPUT_ENET_PHY_CRS     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+32) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_crs
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXER    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+33) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxer
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXDV    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+34) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_phy_rxdv
    // GADI_GPIO_TYPE_INOUT_ETH_MDIO                                                                                                                                                               GADI_GPIO_IN_SEL(2+35)
    GADI_GPIO_TYPE_INPUT_ENET_CLK_RX      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+36) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_clk_rx
    GADI_GPIO_TYPE_INPUT_ENET_CLK_TX      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+37) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: enet_clk_tx
    GADI_GPIO_TYPE_INPUT_SD1_WP_N         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+38) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: sd2_wp_n
    GADI_GPIO_TYPE_INPUT_SD1_CD_N         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+39) | GADI_GPIO_OUT_SEL( 0),    //!< Input type: sd2_cd_n
    //GADI_GPIO_TYPE_INOUT_SD_DATA_0                                                                                                                                                               GADI_GPIO_IN_SEL(2+40)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_1                                                                                                                                                               GADI_GPIO_IN_SEL(2+41)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_2                                                                                                                                                               GADI_GPIO_IN_SEL(2+42)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_3                                                                                                                                                               GADI_GPIO_IN_SEL(2+43)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                                                GADI_GPIO_IN_SEL(2+44)
    GADI_GPIO_TYPE_INPUT_I80_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+45) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx0
    GADI_GPIO_TYPE_INPUT_I80_DATA1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+46) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx1
    GADI_GPIO_TYPE_INPUT_I80_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+47) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx2
    GADI_GPIO_TYPE_INPUT_I80_DATA3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+48) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx3
    GADI_GPIO_TYPE_INPUT_I80_DATA4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+49) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx4
    GADI_GPIO_TYPE_INPUT_I80_DATA5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+50) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx5
    GADI_GPIO_TYPE_INPUT_I80_DATA6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+51) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx6
    GADI_GPIO_TYPE_INPUT_I80_DATA7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+52) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx7
    GADI_GPIO_TYPE_INPUT_I80_DATA8        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+53) | GADI_GPIO_OUT_SEL( 0),//!< Input type: i80_data_rx8
    GADI_GPIO_TYPE_INPUT_JTAG_TRSTN     	= GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+56) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_trstn
    GADI_GPIO_TYPE_INPUT_JTAG_TCK         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+57) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_tck
    GADI_GPIO_TYPE_INPUT_JTAG_TMS         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+58) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_tms
    GADI_GPIO_TYPE_INPUT_JTAG_TDI         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+59) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_tdi

    /* ----------------------------------- GPIO input&&output function define --------------------------------------------------------------------------------------------------- */
    GADI_GPIO_TYPE_INOUT_I2C_DATA         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 3) | GADI_GPIO_IN_SEL(2+ 1) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_sda
    GADI_GPIO_TYPE_INOUT_I2C_CLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 4) | GADI_GPIO_IN_SEL(2+ 2) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_scl
    GADI_GPIO_TYPE_INOUT_I2C_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 5) | GADI_GPIO_IN_SEL(2+ 3) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_sda2
    GADI_GPIO_TYPE_INOUT_I2C_CLK2         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 6) | GADI_GPIO_IN_SEL(2+ 4) | GADI_GPIO_OUT_SEL( 0),    //!< Input/Output type: i2c_scl2

    GADI_GPIO_TYPE_INOUT_ETH_MDIO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(19) | GADI_GPIO_IN_SEL(2+35) | GADI_GPIO_OUT_SEL(49),    //!< Input/Output type: enet_gmii_mdi/enet_gmii_mod_o

    GADI_GPIO_TYPE_INOUT_SD_DATA_0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 8) | GADI_GPIO_IN_SEL(2+14) | GADI_GPIO_OUT_SEL(22),    //!< Input/Output type: sd_data_out[0]
    GADI_GPIO_TYPE_INOUT_SD_DATA_1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 9) | GADI_GPIO_IN_SEL(2+15) | GADI_GPIO_OUT_SEL(23),    //!< Input/Output type: sd_data_out[1]
    GADI_GPIO_TYPE_INOUT_SD_DATA_2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(10) | GADI_GPIO_IN_SEL(2+16) | GADI_GPIO_OUT_SEL(24),    //!< Input/Output type: sd_data_out[2]
    GADI_GPIO_TYPE_INOUT_SD_DATA_3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(11) | GADI_GPIO_IN_SEL(2+17) | GADI_GPIO_OUT_SEL(25),    //!< Input/Output type: sd_data_out[3]
    GADI_GPIO_TYPE_INOUT_SD_DATA_4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(12) | GADI_GPIO_IN_SEL(2+18) | GADI_GPIO_OUT_SEL(26),    //!< Input/Output type: sd_data_out[4]
    GADI_GPIO_TYPE_INOUT_SD_DATA_5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(13) | GADI_GPIO_IN_SEL(2+19) | GADI_GPIO_OUT_SEL(27),    //!< Input/Output type: sd_data_out[5]
    GADI_GPIO_TYPE_INOUT_SD_DATA_6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(14) | GADI_GPIO_IN_SEL(2+20) | GADI_GPIO_OUT_SEL(28),    //!< Input/Output type: sd_data_out[6]
    GADI_GPIO_TYPE_INOUT_SD_DATA_7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(15) | GADI_GPIO_IN_SEL(2+21) | GADI_GPIO_OUT_SEL(29),    //!< Input/Output type: sd_data_out[7]
    GADI_GPIO_TYPE_INOUT_SD_CMD           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(16) | GADI_GPIO_IN_SEL(2+22) | GADI_GPIO_OUT_SEL(30),    //!< Input/Output : sd_cmd

    GADI_GPIO_TYPE_INOUT_SD1_DATA_0	    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)	 | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(20) | GADI_GPIO_IN_SEL(2+40) | GADI_GPIO_OUT_SEL(51),    //!< Input/Output type: sd2_data_out[0]
    GADI_GPIO_TYPE_INOUT_SD1_DATA_1       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)	 | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(21) | GADI_GPIO_IN_SEL(2+41) | GADI_GPIO_OUT_SEL(52),    //!< Input/Output type: sd2_data_out[1]
    GADI_GPIO_TYPE_INOUT_SD1_DATA_2       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)	 | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(22) | GADI_GPIO_IN_SEL(2+42) | GADI_GPIO_OUT_SEL(53),    //!< Input/Output type: sd2_data_out[2]
    GADI_GPIO_TYPE_INOUT_SD1_DATA_3       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)	 | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(23) | GADI_GPIO_IN_SEL(2+43) | GADI_GPIO_OUT_SEL(54),    //!< Input/Output type: sd2_data_out[3]
    GADI_GPIO_TYPE_INOUT_SD1_CMD          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)	 | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(24) | GADI_GPIO_IN_SEL(2+44) | GADI_GPIO_OUT_SEL(55),    //!< Input/Output : sd2_cmd
/*  GADI_GPIO_TYPE_INOUT_I80_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+45) | GADI_GPIO_OUT_SEL( 85),//!< Input/Output type: i80_data_rx0
    GADI_GPIO_TYPE_INOUT_I80_DATA1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+46) | GADI_GPIO_OUT_SEL( 86),//!< Input/Output type: i80_data_rx1
    GADI_GPIO_TYPE_INOUT_I80_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+47) | GADI_GPIO_OUT_SEL( 87),//!< Input/Output type: i80_data_rx2
    GADI_GPIO_TYPE_INOUT_I80_DATA3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+48) | GADI_GPIO_OUT_SEL( 88),//!< Input/Output type: i80_data_rx3
    GADI_GPIO_TYPE_INOUT_I80_DATA4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+49) | GADI_GPIO_OUT_SEL( 89),//!< Input/Output type: i80_data_rx4
    GADI_GPIO_TYPE_INOUT_I80_DATA5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+50) | GADI_GPIO_OUT_SEL( 90),//!< Input/Output type: i80_data_rx5
    GADI_GPIO_TYPE_INOUT_I80_DATA6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+51) | GADI_GPIO_OUT_SEL( 91),//!< Input/Output type: i80_data_rx6
    GADI_GPIO_TYPE_INOUT_I80_DATA7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+52) | GADI_GPIO_OUT_SEL( 92),//!< Input/Output type: i80_data_rx7
    GADI_GPIO_TYPE_INOUT_I80_DATA8        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+53) | GADI_GPIO_OUT_SEL( 93),//!< Input/Output type: i80_data_rx8
*/
    GADI_GPIO_TYPE_INOUT_I80_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+45) | GADI_GPIO_OUT_SEL( 93),//!< Input/Output type: i80_data_rx0
    GADI_GPIO_TYPE_INOUT_I80_DATA1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+46) | GADI_GPIO_OUT_SEL( 94),//!< Input/Output type: i80_data_rx1
    GADI_GPIO_TYPE_INOUT_I80_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+47) | GADI_GPIO_OUT_SEL( 95),//!< Input/Output type: i80_data_rx2
    GADI_GPIO_TYPE_INOUT_I80_DATA3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+48) | GADI_GPIO_OUT_SEL( 96),//!< Input/Output type: i80_data_rx3
    GADI_GPIO_TYPE_INOUT_I80_DATA4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+49) | GADI_GPIO_OUT_SEL( 97),//!< Input/Output type: i80_data_rx4
    GADI_GPIO_TYPE_INOUT_I80_DATA5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+50) | GADI_GPIO_OUT_SEL( 98),//!< Input/Output type: i80_data_rx5
    GADI_GPIO_TYPE_INOUT_I80_DATA6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+51) | GADI_GPIO_OUT_SEL( 99),//!< Input/Output type: i80_data_rx6
    GADI_GPIO_TYPE_INOUT_I80_DATA7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+52) | GADI_GPIO_OUT_SEL( 100),//!< Input/Output type: i80_data_rx7
    GADI_GPIO_TYPE_INOUT_I80_DATA8        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 25) | GADI_GPIO_IN_SEL(2+53) | GADI_GPIO_OUT_SEL( 101),//!< Input/Output type: i80_data_rx8

    GADI_GPIO_TYPE_UNDEFINED              = 0,
} GADI_GPIO_TypeEnumT;
#else
typedef enum
{

    /* ----------------------------------- GPIO output function define ----------------------------------- */
    GADI_GPIO_TYPE_OUTPUT_0               = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 0),//!< Output type: value = 0
    GADI_GPIO_TYPE_OUTPUT_1               = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 1),//!< Output type: value = 1
    GADI_GPIO_TYPE_OUTPUT_SPI1_SO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 2) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 2),//!< Output type: tssi_txd
    GADI_GPIO_TYPE_OUTPUT_SPI1_CS0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 3),//!< Output type: tssi_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SPI1_SCLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 4),//!< Output type: tssi_sclk_out
    GADI_GPIO_TYPE_OUTPUT_UART2_RTS_N     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 5),//!< Output type: uart2_rts_n
    GADI_GPIO_TYPE_OUTPUT_UART2_DTR_N     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 6),//!< Output type: uart2_dtr_n
    GADI_GPIO_TYPE_OUTPUT_UART2_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)     | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 7),//!< Output type: uart2_tx
    GADI_GPIO_TYPE_OUTPUT_UART1_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)     | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 8),//!< Output type: uart1_tx
    GADI_GPIO_TYPE_OUTPUT_UART0_TX        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)     | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 9),//!< Output type: uart0_tx
    GADI_GPIO_TYPE_OUTPUT_PWM3_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(10),//!< Output type: pwm3_out
    GADI_GPIO_TYPE_OUTPUT_PWM2_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(11),//!< Output type: pwm2_out
    GADI_GPIO_TYPE_OUTPUT_PWM1_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(12),//!< Output type: pwm1_out
    GADI_GPIO_TYPE_OUTPUT_PWM0_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(13),//!< Output type: pwm0_out
    GADI_GPIO_TYPE_OUTPUT_SPI0_SO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 7) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(14),//!< Output type: ssi_txd
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(15),//!< Output type: ssi_cs1_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_CS0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(16),//!< Output type: ssi_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SPI0_SCLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(17),//!< Output type: ssi_sclk_out
    //GADI_GPIO_TYPE_INOUT_SD_DATA_0                                                                                                                                         GADI_GPIO_OEN_SEL( 8)                          GADI_GPIO_OUT_SEL(18)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_1                                                                                                                                         GADI_GPIO_OEN_SEL( 9)                          GADI_GPIO_OUT_SEL(19)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_2                                                                                                                                         GADI_GPIO_OEN_SEL(10)                          GADI_GPIO_OUT_SEL(20)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_3                                                                                                                                         GADI_GPIO_OEN_SEL(11)                          GADI_GPIO_OUT_SEL(21)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                          GADI_GPIO_OEN_SEL(12)                          GADI_GPIO_OUT_SEL(22)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_0                                                                                                                                        GADI_GPIO_OEN_SEL(13)                          GADI_GPIO_OUT_SEL(26)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_1                                                                                                                                        GADI_GPIO_OEN_SEL(14)                          GADI_GPIO_OUT_SEL(27)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_2                                                                                                                                        GADI_GPIO_OEN_SEL(15)                          GADI_GPIO_OUT_SEL(28)
    //GADI_GPIO_TYPE_INOUT_SD1_DATA_3                                                                                                                                        GADI_GPIO_OEN_SEL(16)                          GADI_GPIO_OUT_SEL(29)
    //GADI_GPIO_TYPE_INOUT_SDIO1_CMD                                                                                                                                         GADI_GPIO_OEN_SEL(17)                          GADI_GPIO_OUT_SEL(30)
    GADI_GPIO_TYPE_OUTPUT_SDIO_CLK        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)     | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(23),    //!< Output type: sd_clk_sdcard
    GADI_GPIO_TYPE_OUTPUT_SF_CS0          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(24),    //!< Output type: sf_cs0_n
    GADI_GPIO_TYPE_OUTPUT_SF_CS1          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(25),    //!< Output type: sf_cs1_n
    GADI_GPIO_TYPE_OUTPUT_SDIO1_CLK       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_4MA)     | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(31),    //!< Output type: sd2_clk_sdcard
    GADI_GPIO_TYPE_OUTPUT_JTAGE_TDO       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(32),    //!< Output type: jtag_tdout
    GADI_GPIO_TYPE_OUTPUT_VD_VSYNC        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(33),    //!< Output type: lcd_vsync
    GADI_GPIO_TYPE_OUTPUT_VD_HSYNC        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(34),    //!< Output type: lcd_hsync
    GADI_GPIO_TYPE_OUTPUT_VD_CLOCK        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(35),    //!< Output type: lcd_dclk
    GADI_GPIO_TYPE_OUTPUT_VD_HVLD         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(36),    //!< Output type: lcd_hvld
    GADI_GPIO_TYPE_OUTPUT_VD_DATA0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(37),    //!< Output type: lcd_data0
    GADI_GPIO_TYPE_OUTPUT_VD_DATA1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(38),    //!< Output type: lcd_data1
    GADI_GPIO_TYPE_OUTPUT_VD_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(39),    //!< Output type: lcd_data2
    GADI_GPIO_TYPE_OUTPUT_VD_DATA3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(40),    //!< Output type: lcd_data3
    GADI_GPIO_TYPE_OUTPUT_VD_DATA4        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(41),    //!< Output type: lcd_data4
    GADI_GPIO_TYPE_OUTPUT_VD_DATA5        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(42),    //!< Output type: lcd_data5
    GADI_GPIO_TYPE_OUTPUT_VD_DATA6        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(43),    //!< Output type: lcd_data6
    GADI_GPIO_TYPE_OUTPUT_VD_DATA7        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(44),    //!< Output type: lcd_data7
    GADI_GPIO_TYPE_OUTPUT_VD_DATA8        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(45),    //!< Output type: lcd_data8
    GADI_GPIO_TYPE_OUTPUT_VD_DATA9        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(46),    //!< Output type: lcd_data9
    GADI_GPIO_TYPE_OUTPUT_VD_DATA10       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(47),    //!< Output type: lcd_data10
    GADI_GPIO_TYPE_OUTPUT_VD_DATA11       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(48),    //!< Output type: lcd_data11
    GADI_GPIO_TYPE_OUTPUT_VD_DATA12       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(49),    //!< Output type: lcd_data12
    GADI_GPIO_TYPE_OUTPUT_VD_DATA13       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(50),    //!< Output type: lcd_data13
    GADI_GPIO_TYPE_OUTPUT_VD_DATA14       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(51),    //!< Output type: lcd_data14
    GADI_GPIO_TYPE_OUTPUT_VD_DATA15       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(52),    //!< Output type: lcd_data15
    GADI_GPIO_TYPE_OUTPUT_RCT_CLK_OUT2    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(53),    //!< Output type: rct_clk_out2
    GADI_GPIO_TYPE_OUTPUT_RCT_CLK_OUT1    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(54),    //!< Output type: rct_clk_out1
    //GADI_GPIO_TYPE_OUTPUT_SF_WP                                                                                                                                            GADI_GPIO_OEN_SEL(18)                        | GADI_GPIO_OUT_SEL(55),//!< Output type: sf_wp
    //GADI_GPIO_TYPE_OUTPUT_SF_HOLD  
    GADI_GPIO_TYPE_OUTPUT_RCT_XOSC        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(57),    //!< Output type: rct_xosc
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_0      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(58),//!< Output type: ephy_led[0] hcd ok
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_1      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(59),//!< Output type: ephy_led[1] duplex
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_2      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(60),//!< Output type: ephy_led[2] 10M CRS out
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_3      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(61),//!< Output type: ephy_led[3] 100M CRS out
    GADI_GPIO_TYPE_OUTPUT_EPHY_LED_4      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(62),//!< Output type: ephy_led[4] clo gs
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_0  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(63),//!< Output type: enet_phy_txd[0]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_1  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(64),//!< Output type: enet_phy_txd[1]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_2  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(65),//!< Output type: enet_phy_txd[2]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXD_3  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(66),//!< Output type: enet_phy_txd[3]
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXER   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(67),//!< Output type: enet_phy_txer
    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_TXEN   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(68),//!< Output type: enet_phy_txen
    // GADI_GPIO_TYPE_INOUT_ETH_MDIO                                                                                                                                                                                       GADI_GPIO_OUT_SEL(20)
    GADI_GPIO_TYPE_OUTPUT_ENET_GMII_MDC_O = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(70),//!< Output type: enet_gmii_mdc_o
    GADI_GPIO_TYPE_OUTPUT_PWM7_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(71),//!< Output type: pwm7_out
    GADI_GPIO_TYPE_OUTPUT_PWM6_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(72),//!< Output type: pwm6_out
    GADI_GPIO_TYPE_OUTPUT_PWM5_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(73),//!< Output type: pwm5_out
    GADI_GPIO_TYPE_OUTPUT_PWM4_OUT        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL(74),//!< Output type: pwm4_out

    GADI_GPIO_TYPE_OUTPUT_ENET_PHY_RESET  = GADI_GPIO_FUNC(GADI_GPIO_FUNC_OUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 0) | GADI_GPIO_IN_SEL( 0)   | GADI_GPIO_OUT_SEL( 0),//!< Output type: enet_phy_reset

    /* ----------------------------------- GPIO input function define ----------------------------------------------------------------------------------------------------------- */
    GADI_GPIO_TYPE_INPUT_0                = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(   0) | GADI_GPIO_OUT_SEL( 0),//!< Input type: normal input
    GADI_GPIO_TYPE_INPUT_1                = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(   1) | GADI_GPIO_OUT_SEL( 0),//!< Input type: normal input
    GADI_GPIO_TYPE_INPUT_SPI1_SI          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 0) | GADI_GPIO_OUT_SEL( 0),//!< Input type: tssi_rxd
    //GADI_GPIO_TYPE_INOUT_I2C_DATA                                                                                                                                                                GADI_GPIO_IN_SEL(2+ 1)
    //GADI_GPIO_TYPE_INOUT_I2C_CLK                                                                                                                                                                 GADI_GPIO_IN_SEL(2+ 2)
    //GADI_GPIO_TYPE_INOUT_I2C_DATA2                                                                                                                                                               GADI_GPIO_IN_SEL(2+ 3)
    //GADI_GPIO_TYPE_INOUT_I2C_CLK2                                                                                                                                                                GADI_GPIO_IN_SEL(2+ 4)
    GADI_GPIO_TYPE_INPUT_UART2_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 5) | GADI_GPIO_OUT_SEL( 0),//!< Input type: uart2_rx
    GADI_GPIO_TYPE_INPUT_UART1_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 6) | GADI_GPIO_OUT_SEL( 0),//!< Input type: uart1_rx
    GADI_GPIO_TYPE_INPUT_UART0_RX         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 7) | GADI_GPIO_OUT_SEL( 0),//!< Input type: uart0_rx
    GADI_GPIO_TYPE_INPUT_SPI0_SI          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 8) | GADI_GPIO_OUT_SEL( 0),//!< Input type: ssi_rxd
    GADI_GPIO_TYPE_INPUT_SD_WP_N          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+ 9) | GADI_GPIO_OUT_SEL( 0),//!< Input type: sd_wp_n
    GADI_GPIO_TYPE_INPUT_SD_CD_N          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+10) | GADI_GPIO_OUT_SEL( 0),//!< Input type: sd_cd_n
    //GADI_GPIO_TYPE_INOUT_SD_DATA_0                                                                                                                                                               GADI_GPIO_IN_SEL(2+11)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_1                                                                                                                                                               GADI_GPIO_IN_SEL(2+12)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_2                                                                                                                                                               GADI_GPIO_IN_SEL(2+13)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_3                                                                                                                                                               GADI_GPIO_IN_SEL(2+14)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                                                GADI_GPIO_IN_SEL(2+15)
    GADI_GPIO_TYPE_INPUT_SD1_WP_N         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+16) | GADI_GPIO_OUT_SEL( 0),//!< Input type: sd2_wp_n
    GADI_GPIO_TYPE_INPUT_SD1_CD_N         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)      | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+17) | GADI_GPIO_OUT_SEL( 0),//!< Input type: sd2_cd_n
    //GADI_GPIO_TYPE_INOUT_SD_DATA_0                                                                                                                                                               GADI_GPIO_IN_SEL(2+18)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_1                                                                                                                                                               GADI_GPIO_IN_SEL(2+19)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_2                                                                                                                                                               GADI_GPIO_IN_SEL(2+20)
    //GADI_GPIO_TYPE_INOUT_SD_DATA_3                                                                                                                                                               GADI_GPIO_IN_SEL(2+21)
    //GADI_GPIO_TYPE_INOUT_SDIO_CMD                                                                                                                                                                GADI_GPIO_IN_SEL(2+22)
    //GADI_GPIO_TYPE_INPUT_SF_HOLD                                                                                                                                           GADI_GPIO_OEN_SEL(18)                          GADI_GPIO_OUT_SEL( 0),//!< Input type: sf_hold
    //GADI_GPIO_TYPE_INPUT_SF_WP                                                                                                                                             GADI_GPIO_OEN_SEL(19)                          GADI_GPIO_OUT_SEL( 0),//!< Input type: sf_wp
    //NULL
    GADI_GPIO_TYPE_INPUT_JTAG_TRSTN       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+26) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_trstn
    GADI_GPIO_TYPE_INPUT_JTAG_TCK         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+27) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_tck
    GADI_GPIO_TYPE_INPUT_JTAG_TMS         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+28) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_tms
    GADI_GPIO_TYPE_INPUT_JTAG_TDI         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+29) | GADI_GPIO_OUT_SEL( 0),//!< Input type: jtag_tdi
    GADI_GPIO_TYPE_INPUT_SENSOR_IDSP      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+30) | GADI_GPIO_OUT_SEL( 0),//!< Input type: sensor_idsp_field
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_0   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+31) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_rxd[0]                         
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_1   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+32) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_rxd[1]                         
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_2   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+33) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_rxd[2]                         
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXD_3   = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+34) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_rxd[3]                         
    GADI_GPIO_TYPE_INPUT_ENET_PHY_COL     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+35) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_col                            
    GADI_GPIO_TYPE_INPUT_ENET_PHY_CRS     = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+36) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_crs                            
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXER    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+37) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_rxer                           
    GADI_GPIO_TYPE_INPUT_ENET_PHY_RXDV    = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+38) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_phy_rxdv                           
    // GADI_GPIO_TYPE_INOUT_ETH_MDIO                                                                                                                                                                                                                                             GD_GPIO_OEN_SEL(20)     GD_GPIO_IN_SEL(2+39)
    GADI_GPIO_TYPE_INPUT_ENET_CLK_RX      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+40) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_clk_rx                             
    GADI_GPIO_TYPE_INPUT_ENET_CLK_TX      = GADI_GPIO_FUNC(GADI_GPIO_FUNC_IN) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA)    | GADI_GPIO_OEN_INVERT( 0)| GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 1) | GADI_GPIO_IN_SEL(2+41) | GADI_GPIO_OUT_SEL( 0),//!< Input type: enet_clk_tx                             

    /* ----------------------------------- GPIO input&&output function define --------------------------------------------------------------------------------------------------- */
    GADI_GPIO_TYPE_INOUT_I2C_DATA         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 3) | GADI_GPIO_IN_SEL(2+ 1) | GADI_GPIO_OUT_SEL( 0),//!< Input/Output type: i2c_sda
    GADI_GPIO_TYPE_INOUT_I2C_CLK          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 4) | GADI_GPIO_IN_SEL(2+ 2) | GADI_GPIO_OUT_SEL( 0),//!< Input/Output type: i2c_scl
    GADI_GPIO_TYPE_INOUT_I2C_DATA2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 5) | GADI_GPIO_IN_SEL(2+ 3) | GADI_GPIO_OUT_SEL( 0),//!< Input/Output type: i2c_sda2
    GADI_GPIO_TYPE_INOUT_I2C_CLK2         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 6) | GADI_GPIO_IN_SEL(2+ 4) | GADI_GPIO_OUT_SEL( 0),//!< Input/Output type: i2c_scl2

    GADI_GPIO_TYPE_INOUT_SD_DATA_0        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 8) | GADI_GPIO_IN_SEL(2+11) | GADI_GPIO_OUT_SEL(18),    //!< Input/Output type: sd_data_out[0]
    GADI_GPIO_TYPE_INOUT_SD_DATA_1        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL( 9) | GADI_GPIO_IN_SEL(2+12) | GADI_GPIO_OUT_SEL(19),    //!< Input/Output type: sd_data_out[1]
    GADI_GPIO_TYPE_INOUT_SD_DATA_2        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(10) | GADI_GPIO_IN_SEL(2+13) | GADI_GPIO_OUT_SEL(20),    //!< Input/Output type: sd_data_out[2]
    GADI_GPIO_TYPE_INOUT_SD_DATA_3        = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(11) | GADI_GPIO_IN_SEL(2+14) | GADI_GPIO_OUT_SEL(21),    //!< Input/Output type: sd_data_out[3]
    GADI_GPIO_TYPE_INOUT_SD_CMD           = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(12) | GADI_GPIO_IN_SEL(2+15) | GADI_GPIO_OUT_SEL(22),    //!< Input/Output : sd_cmd
    GADI_GPIO_TYPE_INOUT_SF_HOLD          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(18) | GADI_GPIO_IN_SEL(2+23) | GADI_GPIO_OUT_SEL(56),//!< Input/Output type: sf_hold
    GADI_GPIO_TYPE_INOUT_SF_WP            = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(0) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(19) | GADI_GPIO_IN_SEL(2+24) | GADI_GPIO_OUT_SEL(55),//!< Input/Output type: sf_wp
    GADI_GPIO_TYPE_INOUT_SD1_DATA_0       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(13) | GADI_GPIO_IN_SEL(2+18) | GADI_GPIO_OUT_SEL(26),    //!< Input/Output type: sd2_data_out[0]
    GADI_GPIO_TYPE_INOUT_SD1_DATA_1       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(14) | GADI_GPIO_IN_SEL(2+19) | GADI_GPIO_OUT_SEL(27),    //!< Input/Output type: sd2_data_out[1]
    GADI_GPIO_TYPE_INOUT_SD1_DATA_2       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(15) | GADI_GPIO_IN_SEL(2+20) | GADI_GPIO_OUT_SEL(28),    //!< Input/Output type: sd2_data_out[2]
    GADI_GPIO_TYPE_INOUT_SD1_DATA_3       = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(16) | GADI_GPIO_IN_SEL(2+21) | GADI_GPIO_OUT_SEL(29),    //!< Input/Output type: sd2_data_out[3]
    GADI_GPIO_TYPE_INOUT_SD1_CMD          = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_UP|GADI_IOCTRL_2MA)   | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(17) | GADI_GPIO_IN_SEL(2+22) | GADI_GPIO_OUT_SEL(30),    //!< Input/Output : sd2_cmd

    GADI_GPIO_TYPE_INOUT_ETH_MDIO         = GADI_GPIO_FUNC(GADI_GPIO_FUNC_INOUT) | GADI_GPIO_IOCTRL(GADI_IOCTRL_PULL_DOWN|GADI_IOCTRL_2MA) | GADI_GPIO_OEN_INVERT(1) | GADI_GPIO_OUT_INVERT(0) | GADI_GPIO_OEN_SEL(20) | GADI_GPIO_IN_SEL(2+39) | GADI_GPIO_OUT_SEL(69),//!< Input/Output type: enet_gmii_mdi/enet_gmii_mod_o

    GADI_GPIO_TYPE_UNDEFINED              = 0,

    GADI_GPIO_TYPE_OUTPUT_AOMCLK          = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_OUTPUT_AOBCLK          = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_OUTPUT_AOLRCLK         = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_OUTPUT_AO_DATA0        = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_INPUT_I2S_CLK          = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_INPUT_I2S_WS           = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_INPUT_I2S_SI           = GADI_GPIO_TYPE_UNDEFINED,
    GADI_GPIO_TYPE_INPUT_CLK_AU           = GADI_GPIO_TYPE_UNDEFINED,
} GADI_GPIO_TypeEnumT;
#endif
#endif
/*
*******************************************************************************
** \brief ADC channel type.
*******************************************************************************
*/
typedef enum
{
	GADI_ADC_CHANNEL_ONE,
	GADI_ADC_CHANNEL_TWO,
}GADI_GPIO_ADC_ChannelT;

/*
*******************************************************************************
** \brief Configuration parameters for GPIO.
*******************************************************************************
*/

typedef struct
{
	/* channel number */
	GADI_GPIO_ADC_ChannelT channel;
	/* adc number */
	GADI_U32 value;

}GADI_GPIO_AdcValue;

typedef struct
{
    GADI_U32     val_lo : 10;
    GADI_U32            :  5;
    GADI_U32     val_hi : 10;
    GADI_U32            :  5;
    GADI_U32     en_lo  :  1;
    GADI_U32     en_hi  :  1;
}GADI_GPIO_ADC_ControlT;

typedef union
{
    GADI_U32                      data;
    GADI_GPIO_ADC_ControlT        control;
}GADI_GPIO_ADC_CryptoDataT;

typedef struct
{
    GADI_GPIO_ADC_ChannelT channel;
    GADI_GPIO_ADC_CryptoDataT control;
}GADI_GPIO_ADC_OpenParamT;

/*!
*******************************************************************************
**
** \brief Interrupt trigger types.
**
*******************************************************************************
*/
typedef enum
{
    GADI_GPIO_INT_TRIGGER_LOW_LEVEL,      //!< Interrupt trigger on low level.
    GADI_GPIO_INT_TRIGGER_HIGH_LEVEL,     //!< Interrupt trigger on high level.
    GADI_GPIO_INT_TRIGGER_RISING_EDGE,    //!< Interrupt trigger on rising edge.
    GADI_GPIO_INT_TRIGGER_FALLING_EDGE,   //!< Interrupt trigger on falling edge.
    GADI_GPIO_INT_TRIGGER_BOTH_EDGE       //!< Interrupt trigger on both edge.
}GADI_GPIO_INT_TRIGGER_E;

/*!
*******************************************************************************
**
** \brief Interrupt configuration.
**
** \sa    GADI_GPIO_Open()
**
*******************************************************************************
*/
typedef struct
{
    /*!
    ** The interrupt trigger type.
    */
    GADI_GPIO_INT_TRIGGER_E trigger;

    /*!
    ** Flag to enable/disable the interrupt.
    */
    GADI_BOOL enable;

    /*!
    ** The notification function which shall be called when an interrupt
    ** occurs.
    */
    void (*notifyFct)();
}GADI_GPIO_INT_CONFIG_S;

/*
*******************************************************************************
** \brief adc parameter.
*******************************************************************************
*/

typedef struct
{

	GADI_U8 num_gpio;
	/* level mode, 1 for negative 0 for positive */
	GADI_U8 active_low;
	/* output/input, 1/0 */
	GADI_U8 direction;
	/* high/low level, 1/0 in positive mode, 0/1 in negative mode */
	GADI_U8 value;
    /*Interrupt configuration */
    GADI_GPIO_INT_CONFIG_S InterruptConfig;
}GADI_GPIO_OpenParam;

//*****************************************************************************
//*****************************************************************************
//** API Functions
//*****************************************************************************
//*****************************************************************************

#ifdef __cplusplus
extern "C" {
#endif


/*!
*******************************************************************************
** \brief Open one GPIO ADI instance.
**
** \param[in] ErrorCode: A pointer to return the error code.
**
** \param[in] UserConfig: Contains GPIO parameters.
**
** \return
**		   - #(GADI_SYS_HandleT)gpioHandle					An valid handle of gpio ADI instance
**																			  when function calls success.
** \sa
**		   - gadi_gpio_close
**
*******************************************************************************
*/
GADI_SYS_HandleT gadi_gpio_open(GADI_ERR *errorCodePtr,
										GADI_GPIO_OpenParam *userConfig);




/*!
*******************************************************************************
** \brief Close GPIO ADI instance.
**
** \param[in] handle: Valid GPIO ADI instance handle previously opened by #gadi_gpio_open.
**
** \return
**		   - #GADI_OK													On success.
**		   - #NULL														   Error occurred.
**		   - #GADI_GPIO_ERR_BAD_PARAMETER				 Invalid parameter.
**		   - #GADI_GPIO_ERR_FEATURE_NOT_SUPPORTED  File of "export" doesn't exist.
**		   - #GADI_GPIO_ERR_OUT_OF_MEMORY				Get memory failed!
**		   - #GADI_GPIO_ERR_FROM_DRIVER 				   Can't get file descriptor of "unexport"
**																				or file doesn`t exist!by #open.
**		   - #GADI_GPIO_ERR_WRITE_FAILED				   File written failed.
**
** \sa
**		   - gadi_gpio_open
**
*******************************************************************************
*/
GADI_ERR gadi_gpio_close(GADI_SYS_HandleT handle);



/*!
*******************************************************************************
** \brief set output value to "1".
**
** \param[in] handle: Valid GPIO ADI instance handle previously opened by #gadi_gpio_open.
**
** return
**		  - #GADI_OK													On success.
**		  - #GADI_GPIO_ERR_BAD_PARAMETER				 Invalid parameter.
**		  - #GADI_GPIO_ERR_FEATURE_NOT_SUPPORTED   Direction is output mode.
**		  - #GADI_GPIO_ERR_FROM_DRIVER					   Can't get file descriptor of "value"
**																				by #open.
**		  - #GADI_GPIO_ERR_WRITE_FAILED 				   File written failed.
**
** \sa
**		  - gadi_gpio_clear
**
*******************************************************************************
*/
GADI_ERR gadi_gpio_set(GADI_SYS_HandleT handle);

/*!
*******************************************************************************
** \brief set output value to "0".
**
** \param[in] handle: Valid GPIO ADI instance handle previously opened by #gadi_gpio_open.
**
** \return
**		  - #GADI_OK													On success.
**		  - #GADI_GPIO_ERR_BAD_PARAMETER				 Invalid parameter.
**		  - #GADI_GPIO_ERR_FEATURE_NOT_SUPPORTED   Direction is output mode.
**		  - #GADI_GPIO_ERR_FROM_DRIVER					   Can't get file descriptor of "value" by
**																				#open.
**		  - #GADI_GPIO_ERR_WRITE_FAILED 				   File written failed.
**
** \sa
**		  - gadi_gpio_set
**
*******************************************************************************
*/
GADI_ERR gadi_gpio_clear(GADI_SYS_HandleT handle);


/*!
*******************************************************************************

** \brief Get value of high-low level.
**
** \parame[in] handle: Valid GPIO ADI instance handle previously opened by #gadi_gpio_open.
**
** \parame[in] value:  A pointer to return the 1/0 that represent high-low level.
**
** \return
**		   - #GADI_OK													On success.
**		   - #GADI_GPIO_ERR_BAD_PARAMETER				 Invalid parameter.
**		   - #GADI_GPIO_ERR_FEATURE_NOT_SUPPORTED  Direction is input mode.
**		   - #GADI_GPIO_ERR_FROM_DRIVER 				   Can't get file descriptor of "value" by
**																				#open.
**		   - #GADI_GPIO_ERR_READ_FAILED 					File read failed.
**
** \sa
**		   - gadi_gpio_open
**
*******************************************************************************
*/
GADI_ERR gadi_gpio_read_value(GADI_SYS_HandleT handle, GADI_S32 *value);

/*!
*******************************************************************************

** \brief Open adc.
**
** \parame[in] adcOpenParams: adc open parameters.
**

**
** \return
**		   - #GADI_OK									  On success.
**		   - #GADI_GPIO_ERR_BAD_PARAMETER				  Invalid parameter.
**		   - #GADI_GPIO_ERR_FROM_DRIVER 				  Read error
**
**
** \sa
**
*******************************************************************************
*/
GADI_ERR gadi_gpio_open_adc(GADI_GPIO_ADC_OpenParamT *adcOpenParams);

/*!
*******************************************************************************

** \brief Get value of adc channel.
**
** \parame[out] adcValue: adc channel's value
**

**
** \return
**		   - #GADI_OK									  On success.
**		   - #GADI_GPIO_ERR_BAD_PARAMETER				  Invalid parameter.
**		   - #GADI_GPIO_ERR_FROM_DRIVER 				  Read error
**
**
** \sa
**
*******************************************************************************
*/
GADI_ERR gadi_gpio_read_adc(GADI_U32 *adcValue);
GADI_ERR gadi_gpio_close_adc(void);

#ifdef __cplusplus
		}
#endif



#endif /* _ADI_GPIO_H_ */

